/**
 * 适配器类型定义
 * 简化版本，专注于内容分发平台的核心需求
 */

import { EnvironmentType } from './core';

/**
 * 适配器配置接口
 */
export interface IAdapterConfig {
  type?: EnvironmentType;
  options?: Record<string, any>;
}

/**
 * 内容接口定义
 */
export interface IContent {
  /** 内容ID */
  id?: string;
  /** 标题 */
  title: string;
  /** 内容正文 */
  content: string;
  /** 摘要 */
  summary?: string;
  /** 封面图片 */
  coverImage?: {
    src: string;
    width?: number;
    height?: number;
    alt?: string;
  };
  /** 标签 */
  tags?: string[];
  /** 分类 */
  category?: string;
  /** 发布时间 */
  publishTime?: Date;
  /** 元数据 */
  metadata?: Record<string, any>;
}

/**
 * 图片信息接口
 */
export interface IImageInfo {
  /** 图片URL */
  src: string;
  /** 宽度 */
  width?: number;
  /** 高度 */
  height?: number;
  /** 替代文本 */
  alt?: string;
  /** 图片大小（字节） */
  size?: number;
  /** 图片格式 */
  format?: string;
}

/**
 * 发布结果接口
 */
export interface IPublishResult {
  /** 是否成功 */
  success: boolean;
  /** 发布后的文章ID */
  postId?: string;
  /** 发布后的URL */
  url?: string;
  /** 消息 */
  message?: string;
  /** 时间戳 */
  timestamp: Date;
  /** 错误信息 */
  error?: Error;
  /** 平台特定的元数据 */
  metadata?: Record<string, any>;
}

/**
 * 平台验证结果接口
 */
export interface IValidationResult {
  /** 是否有效 */
  valid: boolean;
  /** 错误信息列表 */
  errors: string[];
  /** 警告信息列表 */
  warnings?: string[];
}

/**
 * 平台限制接口
 */
export interface IPlatformLimits {
  /** 标题最大长度 */
  maxTitleLength?: number;
  /** 内容最大长度 */
  maxContentLength?: number;
  /** 摘要最大长度 */
  maxSummaryLength?: number;
  /** 最大标签数量 */
  maxTags?: number;
  /** 标签最大长度 */
  maxTagLength?: number;
  /** 支持的图片格式 */
  supportedImageFormats?: string[];
  /** 最大图片大小（字节） */
  maxImageSize?: number;
}

/**
 * 平台特性接口
 */
export interface IPlatformFeatures {
  /** 是否支持HTML */
  supportsHtml?: boolean;
  /** 是否支持Markdown */
  supportsMarkdown?: boolean;
  /** 是否支持图片 */
  supportsImages?: boolean;
  /** 是否支持标签 */
  supportsTags?: boolean;
  /** 是否支持分类 */
  supportsCategory?: boolean;
  /** 是否支持定时发布 */
  supportsScheduling?: boolean;
  /** 是否支持草稿 */
  supportsDrafts?: boolean;
}


